package Modelo;

public class Codificacion {

    /*Atributos de la clase:
    codificacionmorse: array de String con los valores en Morse de cada letra de la A-Z y numeros 0-9
    codificacionespanil: array con los valores A-Z y 0-9
    lineasatraducir: rescata la frase o código que traducira.*/
    private String[] codificacionmorse = new String[38];
    private String[] codificacionespanol = new String[38];
    private String[] lineasatraducir;
//Constructores

    public Codificacion() {
    }
//Constructor que actualiza los atributos.

    public Codificacion(String[] lineasatraducir) {
        int tamano = lineasatraducir.length;
        this.lineasatraducir = new String[tamano];
        this.lineasatraducir = lineasatraducir;

    }
//Método que contiene y retorna la codificación en español.

    public String[] codificacionEspanol() {
        this.codificacionespanol[0] = ("a");
        this.codificacionespanol[1] = ("b");
        this.codificacionespanol[2] = ("c");
        this.codificacionespanol[3] = ("d");
        this.codificacionespanol[4] = ("e");
        this.codificacionespanol[5] = ("f");
        this.codificacionespanol[6] = ("g");
        this.codificacionespanol[7] = ("h");
        this.codificacionespanol[8] = ("i");
        this.codificacionespanol[9] = ("j");
        this.codificacionespanol[10] = ("k");
        this.codificacionespanol[11] = ("l");
        this.codificacionespanol[12] = ("m");
        this.codificacionespanol[13] = ("n");
        this.codificacionespanol[14] = ("o");
        this.codificacionespanol[15] = ("p");
        this.codificacionespanol[16] = ("q");
        this.codificacionespanol[17] = ("r");
        this.codificacionespanol[18] = ("s");
        this.codificacionespanol[19] = ("t");
        this.codificacionespanol[20] = ("u");
        this.codificacionespanol[21] = ("v");
        this.codificacionespanol[22] = ("w");
        this.codificacionespanol[23] = ("x");
        this.codificacionespanol[24] = ("y");
        this.codificacionespanol[25] = ("z");
        this.codificacionespanol[26] = ("1");
        this.codificacionespanol[27] = ("2");
        this.codificacionespanol[28] = ("3");
        this.codificacionespanol[29] = ("4");
        this.codificacionespanol[30] = ("5");
        this.codificacionespanol[31] = ("6");
        this.codificacionespanol[32] = ("7");
        this.codificacionespanol[33] = ("8");
        this.codificacionespanol[34] = ("9");
        this.codificacionespanol[35] = ("0");
        this.codificacionespanol[36] = ("*");
        this.codificacionespanol[37] = (" ");
        return this.codificacionespanol;
    }

    //Método que contiene y retorna la codificación Morse.
    public String[] codificacionMorse() {
        this.codificacionmorse[0] = (".-");
        this.codificacionmorse[1] = ("-...");
        this.codificacionmorse[2] = ("-.-.");
        this.codificacionmorse[3] = ("-..");
        this.codificacionmorse[4] = (".");
        this.codificacionmorse[5] = ("..-.");
        this.codificacionmorse[6] = ("--.");
        this.codificacionmorse[7] = ("....");
        this.codificacionmorse[8] = ("..");
        this.codificacionmorse[9] = (".---");
        this.codificacionmorse[10] = ("-.-");
        this.codificacionmorse[11] = (".-..");
        this.codificacionmorse[12] = ("--");
        this.codificacionmorse[13] = ("-.");
        this.codificacionmorse[14] = ("---");
        this.codificacionmorse[15] = (".--.");
        this.codificacionmorse[16] = ("--.-");
        this.codificacionmorse[17] = (".-.");
        this.codificacionmorse[18] = ("...");
        this.codificacionmorse[19] = ("-");
        this.codificacionmorse[20] = ("..-");
        this.codificacionmorse[21] = ("...-");
        this.codificacionmorse[22] = (".--");
        this.codificacionmorse[23] = ("-..-");
        this.codificacionmorse[24] = ("-.--");
        this.codificacionmorse[25] = ("--..");
        this.codificacionmorse[26] = (".----");
        this.codificacionmorse[27] = ("..---");
        this.codificacionmorse[28] = ("...--");
        this.codificacionmorse[29] = ("....-");
        this.codificacionmorse[30] = (".....");
        this.codificacionmorse[31] = ("-....");
        this.codificacionmorse[32] = ("--...");
        this.codificacionmorse[33] = ("---..");
        this.codificacionmorse[34] = ("----.");
        this.codificacionmorse[35] = ("-----");
        this.codificacionmorse[36] = (" ");
        this.codificacionmorse[37] = ("*");
        return this.codificacionmorse;
    }

    /*Método que recibe la frase (array) modificada por el método separarFrase, y la compara con
    la codificación en español; cuando se genera una coincidencia se genera un array llamado tradmorse
    que contiene la traducción en Morse. Luego este array es retornado y mostrado*/
    public String[] traduccionaMorse() {
        String[] espanol = new String[38];
        espanol = this.codificacionEspanol();
        String[] morse = new String[38];
        morse = this.codificacionMorse();
        String[] tradmorse = new String[this.lineasatraducir.length];


        for (int i = 0; i < this.lineasatraducir.length; i++) {
            for (int j = 0; j < 37; j++) {
                if (this.lineasatraducir[i].equalsIgnoreCase(espanol[j]) == true) {
                    tradmorse[i] = morse[j];
                }
            }
        }
        return tradmorse;
    }

    /*Método que recibe el código (array) modificado por el método separarCodigo, y lo compara con
    la codificación en Morse; cuando se genera una coincidencia se genera un array llamado tradesp
    que contiene la traducción en español. Luego se retorna y se muestra.*/
    public String[] traduccionaEspanol() {
        String[] espanol = new String[38];
        espanol = this.codificacionEspanol();
        String[] morse = new String[38];
        morse = this.codificacionMorse();
        String[] tradesp = new String[this.lineasatraducir.length];

        for (int i = 0; i < this.lineasatraducir.length; i++) {
            for (int j = 0; j < 38; j++) {
                if (this.lineasatraducir[i].equals(morse[j])) {
                    tradesp[i] = espanol[j];
                }
            }
        }
//Si no existe traducción del código morse ingresado, se rellena con •
        for (int j = 0; j < tradesp.length; j++) {
            if (tradesp[j] == null) {
                tradesp[j] = "•";
            }
        }
        return tradesp;
    }
}
